package org.ccay.enumerable.loader;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.ccay.enumerable.EnumItem;
import org.ccay.enumerable.PlainEnumItem;
import org.ccay.enumerable.SourceEnum;
import org.ccay.enumerable.dao.IDBEnumLoaderDao;

/**
 * 数据库加载枚举项
 * @author chaowangbang
 *
 */
public class DBEnumLoader  implements EnumLoader{
	
	private static Log log = LogFactory.getLog(DBEnumLoader.class);
	
	private IDBEnumLoaderDao loaderDao;
	
	/** 
	 * 枚举项查询执行
	 */
	@Override
	public Map<String, List<EnumItem>> load() {
		Map<String, List<EnumItem>> result = new HashMap<String, List<EnumItem>>();
		List<PlainEnumItemDBLoadVO> items = loaderDao.load();
		for(PlainEnumItemDBLoadVO item : items){
			PlainEnumItem enumItem = new PlainEnumItem(item.getType(),null,item.getValue(),item.getDisplayValue(),item.getIndex(),SourceEnum.SOURCE_DB.getValue());
			if (!result.containsKey(enumItem.getType())) {
				List<EnumItem> ets = new ArrayList<EnumItem>();
				ets.add(enumItem);
				result.put(enumItem.getType(), ets);
			} else {
				List<EnumItem> ets = result.get(enumItem.getType());
				ets.add(enumItem);
			}
		}
		log.debug("loaded "+items.size()+" enum items from database.");
		return result;
	}

	public void setLoaderDao(IDBEnumLoaderDao loaderDao) {
		this.loaderDao = loaderDao;
	}

}
